<?php

session_start();
include '../db.php';
$logueado = true;
if (!isset($_SESSION['Username'])) {
    session_destroy();
    $logueado = false;
    header("Location: index.php");
} else {
    $rs = $conn->query("select * from usuario where Username='" . $_SESSION['Username'] . "'");
    $rs->data_seek(0);
    $datosUsuario = $rs->fetch_assoc();
  //  echo $datosUsuario['id'] . "sd";


    require '../classes/Conf.php';
    require '../classes/ConnectionSecure.php';
    require '../classes/Connection.php';
    require '../classes/Usuarios.php';
    require '../classes/Token.php';
    require '../classes/Transacciones.php';


    if (isset($_SESSION['Username'])) {

        $post_names = array('cuentaO', 'cuentaD', 'dinero', 'token');
        $registrando = true;
        foreach ($post_names as $key => $value) {
            if (!isset($_POST[$value])) {
                echo "Faltan datos por diligenciar!";
                return;
            }
        }
        $error = "";
        $logueado = false;
        if ($registrando) {
            $objToken = new Token();
            $objTransacciones = new Transacciones();
            $obUsuario = new Usuarios();
            $origen = addslashes(trim($_POST['cuentaO']));
            $destino = addslashes(trim($_POST['cuentaD']));
            $monto = addslashes(trim($_POST['dinero']));
            $token = addslashes(trim($_POST['token']));

            $idcuentaOrigen = $objTransacciones->propietarioCuenta($origen);


            $idcuentaDestino = $objTransacciones->propietarioCuenta($destino);

            if (strcmp($idcuentaOrigen, '-1') == 0) {
                echo ('la cuenta "' . $origen . '" no existe.');
                return;
            }
            if (strcmp($objTransacciones->usuarioTieneCuenta($objTransacciones->propietarioCuenta($origen), $_SESSION['Username']), '-1') == 0) {
                echo ('la cuenta "' . $origen . '" no es de su propiedad.');
                return;
            }

            if (strcmp($objTransacciones->propietarioCuenta($destino), '-1') == 0) {
                echo ('la cuenta "' . $destino . '" no existe.<br/>');
                return;
            }
            if (!is_numeric($monto)) {
                echo ('El valor  "' . $monto . '" no es un monto valido.');
                return;
            }

            if ($monto < 0) {
                echo ('El valor  "' . $monto . '" es un monto negativo.');
                return;
            }

//        if (strcmp($objToken->cuentaTieneToken($idcuentaOrigen, $token), '-1') == 0) {
//            echo ('El token "' . $token . '" ya fue usado o no es valido.');
//            return;
//        }
            $config = new Conf();
         //   echo $datosUsuario['id']."   ".$config->getTokenIdusuario($datosUsuario['id'])." =  ".$token;
            
            $idusuario=  trim($datosUsuario['id']);
            
            if ($config->getTokenIdusuario($idusuario) != $token && strcmp($objToken->cuentaTieneToken($idcuentaOrigen, $token), '-1') == 0) {
                echo ('El token ingresado es incorrecto');
                return;
            }
            if (strcmp($obUsuario->idFromUsuario($_SESSION['Username']), '-1') == 0) {
                echo ('No se pudo leer los datos de su session transaccion abortada');
                return;
            }
             if (strcmp($objToken->tieneSaldo($idcuentaOrigen,$monto),'-1')==0) {
                echo ('No tiene saldo suficiente');
                return;
            }
            if (doubleval($monto) < 10000) {
                $objTransacciones->insertarTransaccion($obUsuario->idFromUsuario($_SESSION['Username']), $idcuentaOrigen, $idcuentaDestino, true, $monto, $obUsuario->idFromUsuario($_SESSION['Username']),$token);
              //  $objToken->updateToken($token);
                echo 'Transaccion realizada satisfactoriamente';
            } else {

                $objTransacciones->insertarTransaccionPorAprobar($idcuentaOrigen, $idcuentaDestino, $monto,$token);
                //$objToken->updateToken($token);
                echo 'Transaccion realizada satisfactoriamente, pero necesita aprobacion de un administrador';
            }
        }
    }
}
